/*
 ============================================================================
 Page	     : 307
 Name        : array2d.c
 Date	     : 20210405
 Author      : Hbue 18060333
 Copyright   : Your copyright notice
 Description : 处理二维数组的函数
 ============================================================================
 */

#include <stdio.h>
#define ROWS 3
#define COLS 4
void sum_rows(int array[][COLS], int rows);
void sum_cols(int array[][COLS], int);			// 省略形参名,没问题
int sum2d(int(*array)[COLS], int rows);			// 另一种语法

int main(void)
{
	int junk[ROWS][COLS] = {
			{2,4,6,8},
			{3,5,7,9},
			{12,10,8,6}
	};

	sum_rows(junk, ROWS);
	sum_cols(junk, ROWS);
	printf("Sum of all elements = %d\n", sum2d(junk, ROWS));

	return 0;
}

void sum_rows(int array[][COLS], int rows)
{
	for(int r = 0;r < rows;r++)
	{
		int total = 0;
		for(int c = 0; c < COLS; c++)
		{
			total += array[r][c];
		}
		printf("row %d: sum = %d\n", r, total);
	}
}

void sum_cols(int array[][COLS], int rows)
{
	for(int c = 0; c < COLS; c++)
	{
		int total = 0;
		for(int r = 0;r < rows;r++)
		{
			total += array[r][c];
		}
		printf("col %d: sum = %d\n", c, total);
	}
}

int sum2d(int array[][COLS], int rows)
{
	int total = 0;
	for(int r = 0;r < rows; r++)
	{
		for(int c = 0;c < COLS;c++)
		{
			total += array[r][c];
		}
	}
	return total;
}

